Elasticsearch এ Match, Term, এবং Range Query তিনটি অত্যন্ত গুরুত্বপূর্ণ এবং সাধারণভাবে ব্যবহৃত query, যা ডকুমেন্ট অনুসন্ধান এবং ফিল্টার করার জন্য ব্যবহৃত হয়। এদের প্রত্যেকটির নিজস্ব বৈশিষ্ট্য এবং ব্যবহার রয়েছে। নিচে এদের বেসিক ধারণা এবং উদাহরণ দিয়ে ব্যাখ্যা করা হলো:

1. Match Query

Match Query টেক্সট-ভিত্তিক ফিল্ডের মধ্যে টার্ম বা ফ্রেজ খুঁজে বের করার জন্য ব্যবহৃত হয়। এটি একটি বিশ্লেষণ প্রক্রিয়া (analyzer) ব্যবহার করে ইনডেক্স করা টেক্সটকে টোকেনাইজ করে এবং তারপর সার্চ টেক্সটের সাথে মিলানোর চেষ্টা করে।

বৈশিষ্ট্য:

  • টেক্সট ফিল্ডের মধ্যে পূর্ণ টেক্সট সার্চ করার জন্য ব্যবহার করা হয়।
  • এটি ইনডেক্স করা ডেটা এবং সার্চ করা টার্ম উভয়কে বিশ্লেষণ করে।
  • এটি partial match বা আংশিক মিলের জন্য উপযুক্ত।

উদাহরণ:

GET /my-index/_search
{
  "query": {
    "match": {
      "description": "Elasticsearch tutorial"
    }
  }
}

উপরের উদাহরণে, description ফিল্ডে "Elasticsearch tutorial" সম্পর্কিত টার্ম বা ফ্রেজ খুঁজে বের করবে। Elasticsearch টেক্সটটিকে টোকেনাইজ করে এবং ইনডেক্স করা ডেটার সাথে মিলিয়ে দেখে কোন ডকুমেন্টগুলো এই টার্মগুলো ধারণ করে।

2. Term Query

Term Query নির্দিষ্ট মান বা টার্ম খুঁজে বের করার জন্য ব্যবহৃত হয় এবং এটি ইনডেক্স করা ডেটাকে বিশ্লেষণ (analyze) করে না। এটি মূলত exact match এর জন্য উপযুক্ত এবং সাধারণত কীওয়ার্ড, সংখ্যা বা নির্দিষ্ট মান (যেমন স্ট্যাটাস, আইডি) খুঁজতে ব্যবহৃত হয়।

বৈশিষ্ট্য:

  • Exact match বা সঠিক মিলের জন্য ব্যবহৃত হয়।
  • এটি সাধারণত বিশ্লেষণ (analysis) প্রক্রিয়া চালায় না; ইনডেক্স করা ডেটা যেমন আছে, তেমনই ব্যবহার করে।
  • সংখ্যা, কীওয়ার্ড বা যেসব ফিল্ড বিশ্লেষণ করা হয়নি (not_analyzed) সেগুলোর জন্য বেশি উপযুক্ত।

উদাহরণ:

GET /my-index/_search
{
  "query": {
    "term": {
      "status": "published"
    }
  }
}

এই উদাহরণে, status ফিল্ডে "published" মান খুঁজে দেখা হবে। এটি সঠিকভাবে "published" মান ধারণ করে এমন ডকুমেন্টগুলোই রিটার্ন করবে।

3. Range Query

Range Query এমন ফিল্ডে অনুসন্ধান করে যেগুলোতে সংখ্যা, তারিখ, বা অন্যান্য পরিসীমা ভিত্তিক ডেটা রয়েছে। এটি নির্দিষ্ট মানের পরিসীমা বা রেঞ্জের মধ্যে থাকা ডকুমেন্টগুলোকে রিটার্ন করে।

বৈশিষ্ট্য:

  • এটি সংখ্যা, তারিখ বা রেঞ্জ নির্ভর ফিল্ডের জন্য ব্যবহার করা হয়।
  • বিভিন্ন অপারেটর যেমন gte (greater than or equal), lte (less than or equal), gt (greater than), lt (less than) ব্যবহার করা হয়।
  • এটি রেঞ্জের মধ্যে থাকা ডকুমেন্টগুলোকে ফিল্টার করতে এবং রেঞ্জ অনুসারে সার্চ করতে উপযোগী।

উদাহরণ:

GET /my-index/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 100,
        "lte": 500
      }
    }
  }
}

উপরের উদাহরণে, price ফিল্ডের মধ্যে যেসব ডকুমেন্টের দাম ১০০ থেকে ৫০০ এর মধ্যে আছে সেগুলো রিটার্ন হবে। এখানে gte (greater than or equal) এবং lte (less than or equal) অপারেটর ব্যবহার করা হয়েছে।

সারাংশ

  • Match Query: সাধারণত টেক্সট ফিল্ডের পূর্ণ টেক্সট সার্চ করার জন্য ব্যবহার হয়। এটি ইনডেক্স করা ডেটা এবং সার্চ করা টার্ম বিশ্লেষণ করে এবং আংশিক ম্যাচ খুঁজে পায়।
  • Term Query: সঠিক বা নির্দিষ্ট মান খুঁজতে ব্যবহৃত হয়। এটি সংখ্যা, কীওয়ার্ড বা নির্দিষ্ট মানের ফিল্ডের জন্য উপযুক্ত।
  • Range Query: এটি সংখ্যা, তারিখ বা অন্য রেঞ্জ ভিত্তিক ডেটা খুঁজে বের করার জন্য ব্যবহৃত হয়।

এগুলোর সাহায্যে আপনি Elasticsearch এ বিভিন্ন ধরনের ডেটা খুব সহজেই সার্চ করতে পারেন এবং সার্চ রেজাল্টকে আরও নির্দিষ্ট করতে পারেন।

Content added By

আরও দেখুন...

Promotion